Version control systems (VCS) are used to store multiple versions of documents or other datasets. For example, software engineers use VCS to keep track of different versions of software code. This enables, inter alia, collaboration among different engineers as well as reversion to prior versions of software code.
Conventional VCS stores a single complete version of a dataset and deltas corresponding to changes in each additional version of the dataset rather than storing each full version. Deltas store only the changes from one version to another. Conventional VCS typically use either forward or reverse deltas. Use of forward deltas may involve storing a complete first version of a document or other dataset and deltas representing subsequent changes in versions. Use of reverse deltas may involve storing the most current complete version of a dataset and deltas representing prior versions. Whichever type of delta is stored, computing deltas in conventional VCS is inefficient because each interim version of a dataset is generated in its entirety when generating any particular version from the fully stored version. For example, if a dataset has 100 versions and the VCS employs forward deltas, when version 100 is requested, versions 2-99 are each fully generated in the interim. The same problem occurs if reverse deltas are used and version one is requested. For a dataset with multiple versions and potentially large quantities of data, this inefficiency can result in significant delays or cause other problems when requesting different versions of a document using conventional VCS. These and other problems exist.